Today a user typically owns and/or uses multiple computing devices—for example an office desktop computer, a laptop located at home or used while traveling, a personal digital assistant PDA, a cell phone, etc.
It is common that, different electronic devices run copies of the same software applications. Such widespread software applications being installed on nearly every computing device are for example electronic phone books, electronic calendars, electronic to-do-lists, word processing software, presentation software and other standard software applications. When executing such a software application, application related data can be generated and/or modified. For example, a user can create and/or modify application data in form of a personal list of phone numbers by executing an electronic phone book software application.
Having such different electronic devices available it can be desirable to have access to such application data from at least some of these different devices in order to amend or modify that application data from different device locations. Provided that always the latest version of application data would be available among these devices, a user could keep on processing such application data from different devices. Apart from this single user/multiple device scenario, a multiple user/multiple device scenario could also benefit from such an approach: For example, it could be desirable that certain kinds of application data, for example documents or other data files, are shared between cooperating users in order to permit every user to work on them. Some text document or draft of a contract could for example be edited or revised jointly when different users need to work together.
In particular, due to installation of networks and due to definition of data transfer protocols, distributing data by storing data on a portable memory like a disk and running that disk on another device in order to make this data available there became redundant. Relying on wireless or wire-bound data networks for connecting electronic devices, there are different approaches proposed for sharing application data among different electronic devices.
One can achieve this shared application data—namely that all involved devices always at least seem to comprise the same application data—by having only a single copy of application data stored on a kind of central electronic device like an office system or some computer server. All other electronic devices actually do not maintain the application data or copies thereof but only provide means of connecting to that central copy. For example, these other electronic devices are able to fetch data from and post added or modified data to that central system, respectively to that single copy of application data.
However, in case that communication is broken, no amended or modified data can be transferred among the electronic devices.
U.S. Pat. No. 6,263,498 B1 shows a distributed data processing system including a client side application located on a client computer, wherein the client side application generates a request to access data, and including a server side application on a server computer, wherein the server side application is a dippable object that includes business rules, receives requests from the client side application and returns data to the client side application.
U.S. Pat. No. 5,544,302 discloses an object-oriented framework that is used to create container objects which are, in turn, used to hold both other objects and information. The framework itself contains a set of pre-defined class information which allows container objects to be constructed. Such pre-defined class information includes member functions which provide default editing operations such as cut, copy, paste, drag, drop, selection, move, undo and redo, which editing operations are applicable to all objects in the container. A constructed container object can be accessed by a multitude of users and may contain other objects. Inherent collaboration models support the function and communication style of a particular object. Collaboration models can support screen sharing, annotation merging and document merging. Accordingly a user selects a collaboration model with regard to a created object.
In another approach, the electronic devices involved do comprise copies of the application data, so that a user still can access and modify application data on every single device even when connection is lost between devices or is currently too expensive.
On this approach, the way in which modified parts of data or add-on data performed on one device are spread to the other devices such that all copies of application data always comprise the actual, up-to-date application data, is challenging.
Another problem is that different copies may—at least temporarily—get “out-of-sync”, namely when there is currently no connection between devices or when communication between devices is slow, for example has a high latency.
Another issue on this approach is how to cope with conflict scenarios: (quasi-) concurrent changes in different data copies might occur due to nearly simultaneous exchange of data amendments or due to exchange of complete sets of application data between devices. A reason for this might be network latency or temporary disconnection which can be considered as a special case of very high communication latency.
It would therefore be desirable to provide easily shareable application data to electronic devices while minimizing required adaptations in existing hardware and software structures.